package controles;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modeles.DBManager;
import modeles.Fournisseur;
import modeles.InfoProduit;
import modeles.Produit;

import fenetres.UpdateSupplierFrame;

public class UpdateFrsAction implements ActionListener{
	UpdateSupplierFrame upFrsFrame;
	Fournisseur oFrs;
	
	public UpdateFrsAction(UpdateSupplierFrame _upFrsFrame){
		upFrsFrame = _upFrsFrame;
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		//modification du profil fournisseur
		if(e.getSource() == upFrsFrame.modifBut){
			oFrs = new Fournisseur();
			oFrs.setFourn_code(upFrsFrame.codeTxt.getText());
			oFrs.setFourn_nom(upFrsFrame.nomTxt.getText());
			oFrs.setFourn_adresse(upFrsFrame.adresseTxt.getText());
			oFrs.setFourn_tel(upFrsFrame.telTxt.getText());
			//Enregistrement dans la base de donnees
			DBManager dbManager = new DBManager();
			
			boolean bRes = oFrs.updateProfilFrs(dbManager);
			if(bRes) {
				JOptionPane.showMessageDialog(null, "Mise a Fournisseur reussie !!!","Confirmation",JOptionPane.INFORMATION_MESSAGE);
				upFrsFrame.dispose();
			}
			else JOptionPane.showMessageDialog(null, "Mise a jour Fournisseur echoue !!!","Erreur",JOptionPane.ERROR_MESSAGE);
			upFrsFrame.dispose();
		}
		if (e.getSource() == upFrsFrame.categCombo){
			int indiceSelected = upFrsFrame.categCombo.getSelectedIndex();
			Produit oProd = new Produit();
			DBManager dbManager  = new DBManager ();
			if(indiceSelected == (upFrsFrame.listCateg.size())) {
				
				upFrsFrame.listProduitsBase = oProd.getListProduct(dbManager);//Tous selectionnes
			}
			else{
				oProd.setCateg_id(indiceSelected);
				upFrsFrame.listProduitsBase = oProd.getListProduct(dbManager);
			}
			
			 String [] listProduitTab = new String[upFrsFrame.listProduitsBase.size()];
			 for (int iIndex = 0 ; iIndex < upFrsFrame.listProduitsBase.size(); iIndex++)
			{
				 Produit oProduit = upFrsFrame.listProduitsBase.get(iIndex);
				 listProduitTab [iIndex] = oProduit.getProduit_libelle();
			}
			 //nomCombo.
			 
		}
		if(e.getSource() == upFrsFrame.nomCombo){
			int indiceSelected = upFrsFrame.nomCombo.getSelectedIndex();
			Produit oProduit = upFrsFrame.listProduitsBase.get(indiceSelected);
			upFrsFrame.codeProdTxt.setText(oProduit.getCodeProd());
		}
		if (e.getSource() == upFrsFrame.ajoutBut){
			
			if(upFrsFrame.prixTxt.getText().isEmpty()){
				JOptionPane.showMessageDialog (null, "Veuillez inserer le prix du produit !", "E-commerce", JOptionPane.WARNING_MESSAGE) ;
			}
			else{
				int iLigne = upFrsFrame.tableModel.getRowCount();
				//tableModel.addNewRow();
				String nomProduit = upFrsFrame.nomCombo.getSelectedItem().toString();
				String codeProd = upFrsFrame.codeProdTxt.getText();
				
				DBManager dbManager = new DBManager ();
				Produit oProduit = new Produit();
				oProduit.setCodeProd(codeProd);
				
				oProduit = oProduit.findProductByCode(dbManager);
					//if(!nomProduit.isEmpty()){
					InfoProduit oInfoProduit = new InfoProduit();
					oInfoProduit.setProduit_code(upFrsFrame.codeProdTxt.getText());
					oInfoProduit.setFourn_code(upFrsFrame.codeTxt.getText());//code fournisseur dans l'onglet profil
					oInfoProduit.setProduit_libelle(oProduit.getProduit_libelle());
					oInfoProduit.setCateg_libelle(oProduit.getCateg_libelle());
					oInfoProduit.setProduit_id(oProduit.getProduit_id());
					oInfoProduit.setFourn_id(upFrsFrame.oFrs.getFourn_id());
					
					if(!upFrsFrame.prixTxt.getText().isEmpty()) oInfoProduit.setPrix_achat(Integer.valueOf(upFrsFrame.prixTxt.getText()));
					
					upFrsFrame.listProduitSelected.add(oInfoProduit);
	
					upFrsFrame.updateTable();
				
			//}
			}
			
		}
		
		if(e.getSource() == upFrsFrame.supprBut){
			//supprimer la ligne du tableau
			int irowSelected = upFrsFrame.produitTable.getSelectedRow () ;
			if (irowSelected == -1)
			{
				JOptionPane.showMessageDialog (null, "Veuillez selectionner le produit Ã  supprimer !", "E-commerce", JOptionPane.WARNING_MESSAGE) ;
			}
			else
			{
				upFrsFrame.listProduitSelected.remove(irowSelected);
				upFrsFrame.updateTable();
			}
		}
		
		//mise a jour des produits offerts par les fournisseurs
		
		if(e.getSource() == upFrsFrame.validerProdBut){
			boolean bRes = true;
			DBManager dbManager =  new DBManager();
			upFrsFrame.oFrs.deleteAllProduct(dbManager);

			
			for(int i=0; i<upFrsFrame.listProduitSelected.size();i++){
				DBManager dbManager1 =  new DBManager();
				InfoProduit oInfoProduit =  upFrsFrame.listProduitSelected.get(i);
				
				//enregistrement de l'info produit
				bRes = oInfoProduit.storeInfoProd(dbManager1);
				
			}
			
			if(bRes){
				JOptionPane.showMessageDialog(null, "Mise a jour des produits offerts reussie","Message",JOptionPane.INFORMATION_MESSAGE);
				upFrsFrame.dispose();
			}
		}
		
		if(e.getSource() == upFrsFrame.annulerProdBut){
			
			upFrsFrame.dispose();
		}
	}

}
